如何用人工智能免费抠除任意视频背景?
自从去年以来,因为线上教学和当UP主,我录制视频的机会显著增多了。
只不过,视频背景的处理一直是个痛点。
这是我最近录的一段视频开头部分。
你如果一直在看我的视频节目,对这个背景兴许并不陌生。
我真的喜欢后面墙上不规则的黑板白班、脱落的墙皮和不知道什么颜料的笔画上去的线条吗?
当然不是。
但是我没有选择。家里地方小,东西堆得满。能利用的地方,只有这么大而已。
之前在视频教程里面,我给你介绍过人工智能应用 runwayml 把任何的视频背景都变成绿幕。
这样你就可以把背景换成你想要的样子。书房、图书馆、咖啡馆……甚至是太空。
但是这个方法有些问题。一来需要你手工进行微调(主要对于边缘未能正确识别的区域),二来价格比较高。
原先我试用的时候,每个月是15美金。刚刚打开网站又看了一眼——又涨价了。现在需要28美金/月,还是按年支付的优惠价格。
面对高价,我是不是得转回头,每次都把绿幕弄上呢?
不。明明有了新的技术,咱可不能这么容易服输。
好在,我发现了另一款同样基于人工智能的应用。
它可以变任意背景为绿幕效果,不需要你手动进行边缘色块调整,而且还免费。
在官网主页上面,有一些实际效果的演示。
例如这一个。
实话实说,我被震惊了。别说是人像边缘了,就连快速抖动散乱头发的抠图,都做得堪称完美。
应用的作者是一群来自华盛顿大学的研究者。
你要是对这个应用背后的技术细节感兴趣,他们的论文也可以全文阅读。
在我的公众号后台回复「pbmat」,你就可以免费获得该论文下载地址。
下面我们来说说这个抠图应用怎么用。
尽管作者在官网主页上提供了源代码和脚本样例,但是我觉得最好的使用方式,还是使用 Google Colab Notebook 的方式。
在我的公众号后台回复「cbmat」,你就能找到 Colab Notebook 的链接。
打开之后,大概长这样。
这个样例 Colab Notebook 里包含的代码块,一共只有5个,很简洁。而且其中前两个还是可以忽略的。
因为第一行是安装gdown软件包依赖。而实际上,这个软件包是Google Colab 自带默认载入的。因此没有必要重新安装。
至于第二代码块的两行,则是只有你使用应用自带样例的时候才需要。
!gdown https://drive.google.com/uc?id=1tCEk8FE3WGrr49cdL8qMCqHptMCAtHRU -O /content/src.mp4 -q
!gdown https://drive.google.com/uc?id=1wAR3JjnTO60B_DUr7ruIJj0Z2pcIGkyP -O /content/bgr.png -q
你只需要在页面左侧的文件管理器中,点击按钮,上传自己的视频文件为 src.mp4 ,背景图片为 bgr.png,就可以了。
这里,我必须要说明一下,需要自己上传背景照片这一点,现在还让人感觉麻烦。不过我实际操作了一下,录像之后随手拍了一张背景图,也就是这个样子。倒也不费什么事。
看了背景之后,你大概也明白我为啥非想要把它去除了吧?
越过前面2个代码块,咱们直接依次执行后面的3个。如果你对 Google Colab 的操作不是很熟悉,也可以参考一下我的这篇《如何用 Google Colab 练 Python?》。
执行过程你需要稍微等待一会儿,电脑在云端积极地帮你进行运算处理。
当处理结束的时候,你会在 output 目录下面看到若干个文件。其中的 com.mp4 是我们需要的。
打开以后,是这个样子的。
可以看到,前面人像在动,但是边缘处理非常妥帖。
在 output 目录下面,你还能看到几个其他的视频文件。它们都是输出过程中产生的副产品。
例如这个,是机器帮你扣出的前景动态轮廓。
我是用一个完整视频的前10秒,进行的测试。现在测试成功了,我于是换上完整版视频。视频长度为10分钟左右,体积大约900MB。
这次的处理,就比较缓慢了。我等了一个多小时,才算弄好。不过其实这里是可以优化提速的,下文有介绍。
Google Colab 运行在云端,不需要消耗本机计算资源。你不需要时刻把窗口开在前面,甚至可以中途盖上笔记本盖子休眠。只需要保证窗口离线时间不要太久就好。我的经验是半个小时左右开启看一次就好。如果已经离线,Colab 会自动尝试重新连接运行时(Runtime)。
我这里有几个小建议。
首先,你当然也可以直接把900多MB的视频上传到 Google Colab 的文件工作区。但是这个上传速度,会很慢。
我建议你先把视频文件存储到 Google Drive 里面,然后利用 gdown 命令,下载到 Colab 。从 Google Drive 到 Colab ,比直接上传,能快上十倍不止。
我这里仿照 Notebook 默认样例,写下来的语句是这样的。
!gdown https://drive.google.com/uc?id=1AKmOVf3h8o-BkATV6WZownknkDp6GZJH -O /content/bgr.png -q第二个问题是背景图片。尽管我是在同一地点按下手机的拍照按钮,但是因为 iPhone 摄像的设定,录像的分辨率(1920x1080)和手机拍照的分辨率不一致,就会导致报错。
问题解决起来并不复杂。我找到了这样一个网站,叫做 aconverter 。它可以免费在线转换图片的格式和分辨率。
这里我设定转成 PNG 格式,并且把新的分辨率强制设定为 1920x1080,运行的时候就没有再次报错了。
第三,是我真正转换完毕,才发现的问题,那就是其实 Notebook 里面有提示。如果只需要转换结果,不需要那些副产品,则运行速度可以提升的。
你所需要做的,只是把最后一个代码块中的这一句
--output-type com fgr pha err ref
改成
--output-type com
就可以了。
成功转换视频背景为绿幕之后,我在 unsplash 网站上面找到了一个不要版权的背景图片。
看着挺眼熟吧?没错,不少在线会议网站,都用了这个背景图。
最终合成的效果,是这个样子的。
怎么样,这背景看着,还挺像回事吧?
小结一下,这款新的人工智能抠图应用使你无需购买或使用绿幕,便可以利用免费的 Google Colab Notebook ,获得几乎完美的抠图效果。
你有没有更好的视频抠图方式呢?欢迎在留言区分享给大伙儿。咱们共同学习交流。
感觉有用的话,请点“在看”,并且把它转发给你身边有需要的朋友。
记得订阅我的微信公众号「玉树芝兰」,第一时间免费收到文章更新。别忘了加星标,以免错过新推送提示。
如果有疑问,或需要进一步沟通,请加入我的知识星球。
欢迎关注我的视频号,时常更新。
延伸阅读
题图:Photo by KAL VISUALS on Unsplash